<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // ES6 之前通过 构造函数 + 原型 实现面向对象编程
        // (1) 构造函数有原型对象 prototype 
        // (2) 构造函数原型对象 prototype 里面有 constructor 指向构造函数本身
        // (3) 构造函数可以通过原型对象添加方法
        // (4) 构造函数创建的实例对象有 __proto__ 原型指向 构造函数的原型对象

        // ES6 通过类 实现面向对象编程
        class Star {

        }
        // 1.类的本质其实还是一个函数 我们也可以简单的认为 类就是 构造函数的 另外一种写法
        console.log(typeof Star);
        // (1)类有原型对象 prototype 
        console.log(Star.prototype);
        // (2) 类原型对象 prototype 里面有 constructor 指向类本身
        console.log(Star.prototype.constructor);
        // (3)类可以通过原型对象添加方法
        Star.prototype.sing = function () {
            console.log('冰雨');
        }
        var ldh = new Star();
        console.dir(ldh);
        // (4)类创建的实例对象有 __proto__ 原型指向 类的原型对象
        console.log(ldh.__proto__ === Star.prototype);
    </script>
</body>

</html>